The present invention relates to digital computer systems, and more particularly but not by way of limitation, to methods and an apparatus for implementing two or more architectures on a chip.
Microprocessors exist that implement a reduced instruction set computing (RISC) instruction set architecture (ISA) and an independent complex instruction set computing (CISC) ISA by emulating the CISC instruction with instructions native to the RISC instruction set. Instructions from the CISC ISA are called xe2x80x9cmacroinstructions.xe2x80x9d Instructions from the RISC ISA are called xe2x80x9cmicroinstructions.xe2x80x9d
Existing microprocessors do not implement these two architectures as efficiently as can be done. Some existing processors use more global wires routing data to many parts of the chip. This makes chip routing more difficult and less efficient. These techniques also complicate the timing and the pipeline of the processor. It is desirable to create an efficient means of implementing both architectures on a single chip, while leveraging existing hardware. In particular, it is desirable to localize processing and dispatching of the instructions, with minimal impact on the existing execution engine.
The present invention is a method for implementing two architectures on a single chip. The method uses a fetch engine to retrieve instructions. If the instructions are macroinstructions, then it decodes the macroinstructions into microinstructions, and then bundles those microinstructions using a bundler, within an emulation engine. The bundles are issued in parallel and dispatched to the execution engine and contain pre-decode bits so that the execution engine treats them as microinstructions. Before being transferred to the execution engine, the instructions may be held in a buffer. The method also selects between bundled microinstructions from the emulation engine and native microinstructions coming directly from the fetch engine, by using a multiplexor or other means. Both native microinstructions and bundled microinstructions may be held in the buffer. The method also sends additional information to the execution engine.
The present invention is also a computer system having a processor capable of implementing two architectures. The computer system has a fetch engine to retrieve instructions, an execution engine to execute the instructions, and an emulation engine to decode macroinstructions into microinstructions before their execution. The emulation engine uses a bundler to bundle microinstructions and other information into groups. These bundles are delivered to the execution engine in parallel.